import {Checked} from './checked';

export class Generate {
  public matrix: Number[][] = [
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 8, 9],
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
  ];

  // public Checked;

  constructor() {
    // this.Checked = new Checked();
    // this.createInitMatrix();
    // this.createMatrix();
    this.matrix = this.shuffle(this.matrix)
    console.log(this.matrix);
  }

  public shuffle<T>(array: Array<T>): Array<T> {
    const length = array.length;
    const endIndex = length - 1;
    // for (let i = 0; i < endIndex; i++) {
    //   const j = i + Math.floor(Math.random() * (length - i));
    //   [array[i], array[j]] = [array[j], array[i]];
    // }
    for (let i = 0; i < 9; i++) {
      for (let j = 0; j < 9; j++) {
          const j = i + Math.floor(Math.random() * (9 - i));
          [array[i], array[j]] = [array[j], array[i]];
      }
    }
    return array;
  }

  // 生成所有为0的初始数组
  // public createInitMatrix() {
  //   this.matrix = Array.from({length: 9}, () => new Array(9).fill(0));
  //   console.log(this.matrix);
  // }

  // 生成随机数的数组
  // public createMatrix() {
  //   console.time('生成随机数组开始');
  //   for (let i = 0; i < 9; i++) {
  //     for (let j = 0; j < 9; j++) {
  //       let flag = true;
  //       while(flag){
  //         for (let n = 0; n < 9; n++) {
  //           const val = Math.ceil(Math.random() * 10 % 9);
  //           console.log(val)
  //           // 横
  //           let row = false;
  //           let col = false;
  //           if (this.matrix[n][j] === val) {
  //             row = true;
  //           }
  //           // 纵
  //           if (this.matrix[i][n] === val) {
  //             col = true;
  //           }
  //           if(row == false && col == false) {
  //             flag = false;
  //             this.matrix[n][j] = val;
  //           }
  //         }
  //       }
  //     }
  //   }
  //   console.timeEnd('生成随机结束开始');
  //   console.log(this.matrix);
  //   // const num = Math.ceil(Math.random() * 10 % 9);
  // }
}
